#ifndef TEMPLATECALL_H
#define TEMPLATECALL_H

#include <QString>
#include "node.h"
#include "expressionlist.h"

class Template;
class MemberTemplate;

class TemplateCall : public Node
{
public:
    TemplateCall(const QString& name, ExpressionList* args, const YYLTYPE& loc);

    QString name() const { return m_name; }
    ExpressionList* arguments() const { return m_args; }

    Template* resolvedTemplate() const;
    MemberTemplate* resolvedMemberTemplate() const;

    virtual void resolveAll();

private:
    QString m_name;
    ExpressionList* m_args;
    Node* m_resolvedNode;
};

#endif // TEMPLATECALL_H
